# -*- coding=utf-8 -*-
# @time:2021/8/9
# @phone:15874198829
# @author:码尚教育_星瑶
import time

from appium  import webdriver
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
"""
H5元素的定位
WebView  展示html页面 Android系统提供系统控件实现网页展示
WebView里面可以嵌套多个WebView
h5页面上元素如何定位？
WebView设置为调试状态   直接开发去设置
检测WebView检测设置为调试状态   谷歌的调试地址  
当app页面检索到WebView，打印出所有的环境的值
driver.contexts

切换环境：driver.switch_context("WebView的名称？")
如何查看h5元素的属性及标签（定位h5元素的工具）
1、chrome://inspect/#devices  科学上网
2、uc-devtools
3、page_source   # 获取webview网页的脚本  driver.page_source

"""
desired_caps={
    "automationName":"UiAutomator2", #默认框架
    "platformName":"Android", #指定操作系统
"platformVersion":"5.1.1",#指定系统版本
    "deviceName":"127.0.0.1:62001",#指定设备名称
    "appPackage":"com.wondershare.drfone",#被操作的应用程序包名
    "appActivity":"com.wondershare.drfone.ui.activity.Main2Activity" , #启动页面
    "noReset":True  #  为true 不重置  为false 重置
}
# 发送指令给appium server
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

# 	text=Backup
loc_backup=(MobileBy.ID,"com.wondershare.drfone:id/btnBackup")
WebDriverWait(driver,15).until(EC.presence_of_element_located(loc_backup))
driver.find_element(*loc_backup).click()
print("点击backup")
# 点击next
time.sleep(8)
# text=	Next
loc_Next=(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("Next")')
WebDriverWait(driver,15).until(EC.presence_of_element_located(loc_Next))
driver.find_element(*loc_Next).click()
print("点击next")

#定位原生的app元素
# 原生app切换到webview
print("contexts:",driver.contexts)
# ['NATIVE_APP', 'WEBVIEW_com.wondershare.drfone']
# NATIVE_APP:原生app控件黄精
# 切换h5环境
driver.switch_to.context("WEBVIEW_com.wondershare.drfone")
# 实现元素定位
print("切换WebView环境")
loc_email=(MobileBy.ID,'email')
WebDriverWait(driver,5,0.01).until(EC.presence_of_element_located(loc_email))
driver.find_element(*loc_email).send_keys("123445@qq.com")
time.sleep(1)

# 从h5元素切换到app原生控件  需要切换环境NATIVE_APP
#
driver.switch_to.context("NATIVE_APP")
print("切换原生控件元素环境")






